Response Web Design

《Dive_into_Responsive_Web_Design_lisongfeng.pdf》

媒体查询

媒体查询由一个媒体类型和零或多个表达式组成,其中的表达式用于检测特定的媒体特性。

@media (orientation: portrait) and (min-width:768px) and (…) { … }

@media all and (min-width: 1200px){ ... }

多数特性带min-或max-前缀,表示“大于等于”或“小于等于”,以免与HTML或XML中的“<”和“>”冲突。可以带前缀的特性使用时通常带前缀,比如max-width。

媒体查询是一个逻辑表达式,它值要么为true,要么为false。如果媒体查询的媒体类型与运行用户代理的设备的媒体类型匹配,并且媒体查询中的所有表达式返回true,则媒体查询返回true。

<head>
    <link rel="stylesheet" 
    href="wide.css" 
    media="screen and (min-width:1024px)" 
    />

    <link rel="stylesheet" 
    href="mobile.css"
    media="screen and (max-width:320px)" 
    />
</head>
<style>
    @media all and (min-width:500px) { … }
    @media (orientation: portrait) { … }
</style>

多个媒体查询可以组合成媒体查询列表,以逗号分隑。列表中的一或多个媒体查询返回true,列表返回true,否则返回false。列表中用逗号表示逻辑或,用and关键字表示逻辑与。

@media screen and (color), projection and (color) { … }

弹性布局

在css中,对width/height都使用百分比,不使用绝对数值。

弹性媒体

不父元素共舞。

img,
object,
embed,
video {
    max-width: 100%;
}

不限制图片一样,max-width会限制视频窗口宽度不会超过父元素的宽度。

弹性字体

用em代替px。

html, body {
    font-size:14px; 
    /* 1em = 14px */
}
header {
    font-size:18px;
}
header h1 {
    font-size:28px;
}

视口

<meta 
name="viewport"
content= "initial-scale=1.0"
/>

<meta 
name="viewport"
content= "width=device-width"
/>